﻿/// <summary>
/// Script de controlador del layaut del site.
/// </summary>
/// <remarks>
/// Creacion: 	GMD(EMP) 24/03/2015
/// </remarks>
ns('Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Index');
Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Index.Controller = function () {
    var base = this;
    base.Ini = function () {

        base.Control.BtnLimpiar().on('click', base.Event.BtnLimpiarClick);
        base.Control.BtnBuscar().on('click', base.Event.BtnBuscarClick);
        base.Control.BtnAgregar().on('click', base.Event.BtnAgregarClick);
        base.Control.BtnEliminar().on('click', base.Event.BtnEliminarClick);

        base.Control.ValBusqueda = new Pe.GMD.UI.Web.Components.Validator({
            form: base.Control.FrmAdministrarOrdenCompraBusqueda(),
            validationsExtra: base.Function.ValidarFiltros(),
            messages: {
                CompletarFiltro: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.InformacionIngresarFiltro
            }
        });

        base.Control.DlgFormularioEliminar = new Pe.GMD.UI.Web.Components.Message();

        //base.Control.FormularioRegistro = new Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.FormularioRegistro.Controller({
        //    GrabarSuccess: base.Event.BtnBuscarClick
        //});
        base.Control.SlcEstado().val('R');

        base.Function.CrearGrid();
        base.Event.BtnBuscarClick();

    };

    base.Control = {
        FormularioRegistro: null,
        GrdResultado: null,
        Mensaje: new Pe.GMD.UI.Web.Components.Message(),
        ValBusqueda: null,
        DlgFormularioEliminar: null,
        FrmAdministrarOrdenCompraBusqueda: function () { return $('#frmAdministrarOrdenCompraBusqueda'); },
        TxtNombreProveedor: function () { return $('#txtNombreProveedor'); },
        SlcEstado: function () { return $('#slcEstado'); },

        BtnLimpiar: function () { return $('#btnLimpiar'); },
        BtnBuscar: function () { return $('#btnBuscar'); },
        BtnAgregar: function () { return $('#btnAgregar'); },
        BtnEliminar: function () { return $('#btnEliminar'); }

    };

    base.Event = {
        BtnGridEditClick: function (row, data) {
            'use strict'
            window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Actions.FormularioRegistro + '?codigo=' + data.CodigoOrdenCompra;
        },
        BtnGridViewClick: function (row, data) {
            'use strict'
            window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Actions.FormularioRegistro + '?codigo=' + data.CodigoOrdenCompra + '&accion=1';
        },
        BtnGridRemoveClick: function (row, data) {
            'use strict'
            base.Control.Mensaje.Confirmation({
                message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.ConfirmacionEliminacion,
                onAccept: function () {
                    base.Ajax.AjaxEliminar.data = {
                        codigos: [data.CodigoOrdenCompra],
                    };
                    base.Ajax.AjaxEliminar.submit();
                    action: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Actions.Anular
                }
            });
        },
        BtnGridCopyClick: function (row, data) {
            'use strict'
            base.Ajax.AjaxCopiar.data = {
                codigo: data.CodigoOrdenCompra
            };
            base.Ajax.AjaxCopiar.submit();
        },
        BtnEliminarClick: function () {
            var lista = new Array();

            $.each(base.Control.GrdResultado.GetSelectedData(), function (index, value) {
                lista.push(value.CodigoPedido);
            });

            base.Ajax.AjaxEliminar.data = {
                codigosPedido: lista
            };

            base.Ajax.AjaxEliminar.submit();
        },
        BtnLimpiarClick: function () {
            'use strict'
            base.Control.FrmAdministrarOrdenCompraBusqueda()[0].reset();
        },
        BtnBuscarClick: function () {
            'use strict'

            if (base.Control.ValBusqueda.isValid()) {
                var filtro = {
                    CodigoEstado: base.Control.SlcEstado().val(),
                    NombreProveedor: base.Control.TxtNombreProveedor().val()
                };

                base.Control.GrdResultado.Load(filtro);
            }
        },
        BtnAgregarClick: function () {
            'use strict'
            window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Actions.FormularioRegistro + '?codigo=0';
        },

        AjaxEliminarSuccess: function (data) {
            base.Event.BtnBuscarClick();
        },
        AjaxCopiarSuccess: function (data) {
            base.Control.Mensaje.Information({
                message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.SeGuardoInformacionExito + ' Nueva Orden Compra  : ' + data.Result.CodigoOrdenCompra
            });
            base.Event.BtnBuscarClick();
        }
    };
    base.Ajax = {
        AjaxEliminar: new Pe.GMD.UI.Web.Components.Ajax({
            action: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Actions.Anular,
            autoSubmit: false,
            onSuccess: base.Event.AjaxEliminarSuccess
        }),
        AjaxCopiar: new Pe.GMD.UI.Web.Components.Ajax({
            action: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Actions.Copiar,
            autoSubmit: false,
            onSuccess: base.Event.AjaxCopiarSuccess
        })
    };

    base.Function = {
        CrearGrid: function () {
            var columns = new Array();

            columns.push({ data: 'CodigoOrdenCompra', title: 'N° Orden Compra', width: '70px' });
            columns.push({ data: 'NumeroDocumento', title: 'RUC' });
            columns.push({ data: 'NombreProveedor', title: 'Proveedor' });
            columns.push({ data: 'FechaEntrega', title: 'Fecha Entrega', width: '80px' });
            columns.push({ data: 'NombreMoneda', title: 'Moneda', width: '80px' });
            columns.push({ data: 'MontoSubTotal', title: 'Monto' });
            columns.push({ data: 'NombreEstado', title: 'Estado', width: '80px' });
            columns.push({ data: 'UsuarioCreacion', title: 'Usuario Creacion', width: '80px' });
            columns.push({ data: 'FechaCreacion', title: 'Fecha Creacion', width: '80px' });


            columns.push({
                data: '',
                title: Pe.Petecos.Comercial.Presentacion.Base.GenericoResource.GridAcciones,
                'class': 'controls',
                width: '120px',
                actionButtons: [
                    {
                        type: Pe.GMD.UI.Web.Components.GridAction.Edit, event: { on: 'click', callBack: base.Event.BtnGridEditClick },
                        validateRender: function (data, type, full) {
                            var isShow = (full.CodigoEstado != Pe.Petecos.Comercial.Presentacion.Enumerados.EstadoOrdenCompra.Eliminado && full.CodigoEstado != Pe.Petecos.Comercial.Presentacion.Enumerados.EstadoOrdenCompra.Aprobado)
                            return isShow;
                        }
                    },
                    { type: Pe.GMD.UI.Web.Components.GridAction.View, event: { on: 'click', callBack: base.Event.BtnGridViewClick } },
                    {
                        type: Pe.GMD.UI.Web.Components.GridAction.Delete, event: { on: 'click', callBack: base.Event.BtnGridRemoveClick },
                        validateRender: function (data, type, full) {
                            var isShow = (full.CodigoEstado != Pe.Petecos.Comercial.Presentacion.Enumerados.EstadoOrdenCompra.Eliminado && full.CodigoEstado != Pe.Petecos.Comercial.Presentacion.Enumerados.EstadoOrdenCompra.Aprobado)
                            return isShow;
                        }
                    },
                    { type: Pe.GMD.UI.Web.Components.GridAction.Copy, event: { on: 'click', callBack: base.Event.BtnGridCopyClick } },
                ]
            });


            base.Control.GrdResultado = new Pe.GMD.UI.Web.Components.Grid({
                renderTo: 'divGrdResult',
                hasSelectionRows :false,
                columns: columns,
                columnDefs: [{ sWidth: '80px', aTargets: [1] }],
                proxy: {
                    url: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarOrdenCompra.Actions.Buscar,
                    source: 'Result'
                }
            });
        },

        ValidarFiltros: function () {
            var validaciones = new Array();
            validaciones.push(
                    {
                        Event: function () {
                            var resultado = true; //(base.Control.TxtNombreProveedor().val() != '' || base.Control.SlcEstado().val() != '');

                            return resultado;
                        },
                        codeMessage: 'CompletarFiltro'
                    }
                );
            return validaciones;
        }
    };
};